為什麼會從 docker 聊到 k8s(kubernetes) 呢?
因為每個專案裡面一定有 dockerfile 啊(喂
比方說 ... 我寫了一個 http server,經由 docker 的協助 build 成執行檔,在 kubernetes 的機器中 run 起服務 by dockerfile ,並透過 kubernetes 的連線方式對外溝通,即完成一個簡單的 http server 服務
docker 跟 k8s 是互補的,應該說 docker 是一種 container 技術,在 k8s 內可以用 conatiner 來做啟動服務的一個單位
container 並不止 docker 一種,還有一些其他的 Containerization 工具,只不過 我學到的是 docker
要在 k8s 內 run 起服務也不一定要經由 container ,只不過 container 提供了一個較為方便的操作方式來啟動服務
在我的理解中,container 與 k8s 之間是合作關係。
在 k8s 中,service 是分散式叢集架構的核心,一個 service object,擁有以下幾個關鍵特性:
service 的服務經由 socket 連線方式對外提供服務。
網路插座(英語:Network socket;又譯網路接套、網路介面、網路插槽)在計算機科學中是電腦網路中行程間資料串流的端點。使用以網際協定(Internet Protocol)為通訊基礎的網路插座,稱為網際插座(Internet socket)。因為網際協定的流行,現代絕大多數的網路插座,都是屬於網際插座。
比方說:mysql , redis , http_server ... 等
一個 service 經常是由多個相關的服務程式來提供服務,每個服務程式都有一個獨立的 endpoint(IP + port),k8s 能讓我透過 service (虛擬機器 ip + service port )連接到指令的 service 上。